package com.fancy.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fancy.common.dto.response.Result;
import com.fancy.user.dto.request.*;
import com.fancy.user.dto.response.UserManageListResponseVO;

import java.util.List;

/**
 * 用户管理服务接口
 */
public interface UserManageService {

    /**
     * 获取用户管理列表
     *
     * @param keyword 搜索关键词
     * @param status 用户状态
     * @param membershipType 会员类型
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param page 页码
     * @param size 每页大小
     * @return 分页的用户列表
     */
    Result<Page<UserManageListResponseVO>> getUserManageList(
            String keyword, Integer status, String membershipType,
            String startDate, String endDate, int page, int size);

    /**
     * 管理用户（禁用/启用）
     *
     * @param userId 用户ID
     * @param dto 管理请求参数
     * @return 管理结果
     */
    Result<Void> manageUser(Long userId, UserManageRequestDTO dto);

    /**
     * 删除用户
     *
     * @param userId 用户ID
     * @param deleteReason 删除原因
     * @return 删除结果
     */
    Result<Void> deleteUser(Long userId, String deleteReason);

    /**
     * 批量删除用户
     *
     * @param dto 批量删除请求参数
     * @return 删除结果
     */
    Result<Void> batchDeleteUsers(BatchDeleteUsersRequestDTO dto);

    /**
     * 重置用户密码
     *
     * @param userId 用户ID
     * @param dto 重置密码请求参数
     * @return 重置结果
     */
    Result<Void> resetUserPassword(Long userId, ResetPasswordRequestDTO dto);

    /**
     * 设置用户会员
     *
     * @param userId 用户ID
     * @param dto 设置会员请求参数
     * @return 设置结果
     */
    Result<Void> setUserMembership(Long userId, SetUserMembershipRequestDTO dto);
}
